package cn.rumoss.nettytest.time.pojo;

import java.util.List;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;

public class TimeDecoder extends ByteToMessageDecoder{
  
  /**
   * 每当有新数据接收的时候，ByteToMessageDecoder都会调用decode()方法
   * 来处理内部的那个累积缓冲
   * Decode()方法可以决定当累积缓冲里没有足够数据时可以往out对象里放任意数据
   * 当有更多的数据被接收了ByteToMessageDecoder会再一次调用decode()方法
   * 将会丢弃在累积缓冲里已经被读过的数据,请记得你不需要对多条消息调用
   * 会持续调用decode()直到不放任何数据到out里
   */
  @Override
  protected void decode(ChannelHandlerContext ctx,ByteBuf in,List<Object> out) throws Exception{
    
    if(in.readableBytes()<4) {
      return;
    }
    out.add(new UnixTime(in.readInt()));
    
  }
  
}
